package com.qinke.mqcluster.simple;

import com.ibm.mq.*;
import com.ibm.mq.constants.MQConstants;

import java.io.IOException;

public class CQMSender {
    private static String host = "192.168.137.14";
    private static Integer port=1415;
    private static String channel="TESTCHANNEL";
    private static String qmgr="CQM4";
    private static String queueName="CQ1";
    private static void init(){
        //配置要使用的队列管理器的信息，这里使用队列管理器CQM1的信息
        MQEnvironment.hostname=host;
        MQEnvironment.port=port;
        MQEnvironment.channel=channel;
    }
    public static void send(){
        try {
            //创建队列管理器对象，在实例化的时候会隐式连接队列管理器CQM1
            MQQueueManager mqQueueManager = new MQQueueManager(qmgr);
            //定义打开方式
            int openOption = MQConstants.MQOO_OUTPUT; //以写入方式打开
            openOption  = openOption + MQConstants.MQOO_BIND_NOT_FIXED;//写入消息方式为不绑定方式（想要负载均衡必须为此方式）
            //直接循环，每次发10条消息
            //创建队列对量
            MQQueue queue = mqQueueManager.accessQueue(queueName,openOption);
            for(int i=0;i<=10;i++){
                //创建简单消息对象
                MQMessage mqMessage = new MQMessage();
                //将数据写入消息对象中（可自行尝试其他write方法）
                mqMessage.writeUTF("简单消息:"+i);
                //使用队列发送消息
                queue.put(mqMessage);
            }
            //关闭打开的资源，养成好习惯
            queue.close();
            mqQueueManager.disconnect();
        } catch (MQException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        init();
        send();
    }
}
